import axios from 'axios'
import type { AxiosInstance, AxiosResponse } from 'axios'
import { ElMessage } from 'element-plus'
import router from '@/router'

const request: AxiosInstance = axios.create({
  baseURL: import.meta.env.VITE_API_URL,
  timeout: 5000,
  withCredentials: true
})

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.token = token
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  (response: AxiosResponse) => {
    // 如果响应成功，直接返回数据
    if (response.status === 200) {
      // 如果后端返回的是空数据，我们也认为是成功的
      if (response.data === '' || response.data === null) {
        return {
          code: 200,
          message: '操作成功',
          data: null
        }
      }
      return response.data
    }
    return Promise.reject(new Error('请求失败'))
  },
  (error) => {
    // 这里添加详细的错误日志
    console.error('请求错误详情:', {
      config: error.config,
      response: error.response,
      message: error.message
    })

    if (error.response) {
      // 服务器返回了错误状态码
      return Promise.reject(error)
    } else if (error.request) {
      // 请求发出去了但没有收到响应
      return Promise.reject(new Error('服务器无响应'))
    } else {
      // 请求配置出错
      return Promise.reject(error)
    }
  }
)

export default request 